package com.azt.provider.impl;

import com.azt.api.enums.CompanyIdentityEnum;
import com.azt.api.pojo.CompanySign;
import com.azt.api.service.CoinService;
import com.azt.api.service.CompanySignService;
import com.azt.model.page.Pagination;
import com.azt.provider.mapper.CompanySignMapper;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
import java.util.Map;

@Service
@Transactional
public class CompanySignServiceImpl implements CompanySignService {

	@Autowired
	private CompanySignMapper companySignMapper;

	@Autowired
	private CoinService coinService;

	@Override
	public Pagination getCompanySignPage(int pageno, int pagesize, Map<String, String> searchMap){
		
		Page<Object> startPage = PageHelper.startPage(pageno, pagesize);
		List<CompanySign> companySignList = companySignMapper.selectCompanySignList(searchMap);
		Pagination p = new Pagination(startPage, companySignList);
		p.setList(companySignList);
		p.setParams(searchMap);
		return p;
	}
	
	@Override
	public CompanySign getById(int id){
		return companySignMapper.selectByPrimaryKey(id);
	}

	@Override
	public void edit(CompanySign companysign){
		companySignMapper.updateByPrimaryKeySelective(companysign);
	}

	@Override
	public void signCompany(CompanySign companysign, Integer adminId) {
		if(companysign != null) {
			CompanySign _companySign = getCompanySign(companysign.getCompanyId(), 2, true);
			if(_companySign == null) {
				companysign.setUsable(2);
				companySignMapper.insertSelective(companysign);
				//赠送安装币
				if(companysign.getIdentity().intValue() == CompanyIdentityEnum.GOLDSELLER.getValue()) {
					//金牌服务商
					coinService.addCompanyCoin("INTO_GOLD", companysign.getCompanyId(), companysign.getPromiseAmount(), null, adminId);
				} else if(companysign.getIdentity().intValue() == CompanyIdentityEnum.GOLDBUYER.getValue()) {
					//银牌采购商
					coinService.addCompanyCoin("INTO_SILVER", companysign.getCompanyId(), companysign.getPromiseAmount(), null, adminId);
				}
			}
		}
	}
	
	@Override
	public CompanySign getCompanySign(Integer companyId, Integer usables, boolean bool) {
		return companySignMapper.getCompanySign(companyId, usables, bool);
	}
}
